草庐IT

c++ - Clang、std::next、libstdc++ 和 constexpr-ness

全部标签

c++ - std::condition_variable::notify_all() 保证

假设一个条件变量上有N个等待线程(读者),它们被另一个线程(生产者)通知。现在,所有N个读者都将尝试拥有他们引用的unique_lock,一次一个。现在假设生产者出于某些原因想要再次锁定同一个unique_lock,甚至在任何被唤醒的读者开始拥有锁之前。按照标准,只有在所有被通知的读者都开始锁定步骤后,生产者才能成功(尝试)进入其临界区吗? 最佳答案 除了§1.10第2段中给出的相当模糊的调度之外,没有关于调度的保证:Implementationsshouldensurethatallunblockedthreadseventual

c++ - g++ std::bind 错误与 shared_ptr

我无法理解为什么以下代码无法编译。#include#includeclassFoo{public:voidBar(inti){}};voidX(std::function)>f){}intmain(){std::shared_ptrf(newFoo);autof1(std::bind(&Foo::Bar,std::placeholders::_1,1));X(f1);return0;}g++(4.6.3)输出...nfileincludedfrom/usr/include/c++/4.6/memory:80:0,fromtest.cpp:1:/usr/include/c++/4.6/f

c++ - 这是微软实现 std::thread 的一个大错误吗?

#define_CRTDBG_MAP_ALLOC#include#include#includeusingnamespacestd;voidHello(){}intmain(){{std::thread(Hello).join();}_CrtDumpMemoryLeaks();}输出窗口显示:(VC++编译器版本:2012年11月CTP)Thethread0x5ab8hasexitedwithcode0(0x0).Detectedmemoryleaks!Dumpingobjects->{261}normalblockat0x002A2E00,44byteslong.Data:01000

c++ - 关于 std::thread 中的 C++ 自动类型转换行为

我创建了两个类cl1和cl2并且cl1有一个带有cl2&参数的构造函数.我有三个函数,一个以cl1为参数,一个以cl1&&为参数,一个以cl1&为参数。#include#includeclasscl1;classcl2;classcl2{public:inty;cl2(inty):y(y){}//ctor};classcl1{public:intx;cl1(intx):x(x){}//ctorcl1(cl2&ob1):x(ob1.y*2){}//ctorforautomaticconversionofcl2&tocl1,x=y*2};voiddo_work_with_cl(cl1ob)

c++ - MinGW-Clang 的 libgcc_s_dw2-1.dll 丢失了吗?

当我尝试运行rubenvb'sClang3.2时,我得到:Theprogramcan'tstartbecauselibgcc_s_dw2-1.dllismissingfromyourcomputer.Tryreinstallingtheprogramtofixthisproblem.我在任何地方都找不到DLL...我缺少什么包/我该如何解决这个问题? 最佳答案 您还需要下载一个gcc包,Clang的构建没有C++库或任何东西。它的意思是与gcc包结合使用。来自here:HereyouwillfindthelatestClangcom

c++ - std::containers 的日志分配器?

X:我需要知道程序的每个部分使用了多少内存。我的程序经常使用C++std库。特别是,我想知道每个对象使用了多少内存。我是怎么做的:要记录some_vector的消耗,只需写my::vectorsome_vector;在哪里namespacemy{templateusingvector=std::vector>;}登录分配器实现如下:templatestructLoggingAllocator{//...boilerplate...pointerallocate(size_typen,std::allocator::const_pointerhint=0){log_allocation(

c++ - 多个 std::atomic<T> 条件

在我的多线程应用程序中,我有一个可以简化为这个例子的条件std::atomica,b;//...if(a.load()&&b.load()){//...}显然,在条件之后,a和b可以持有不同的值。在我的应用程序中,它认为,如果两个值同时为真,它们就不能再改变状态。但是在a.load()返回true之后,它可能甚至在b.load()被评估之前改变它的值。是否有一个优雅的解决方案来原子地评估这个声明?显然,锁定a.store(..)和b.store(..)的每次调用都可以在这里工作,但这远非好事。 最佳答案 您是否考虑过使用atomic

c++ - constexpr、数组和初始化

C++世界中是否有任何东西可以使我尝试做的事情成为可能?templatestructarray{constexprTbuf[Size];constexprsize_tsize()const{returnSize;}};templateconstexprarraypush_back(arrayconst&arr,Tconst&val){arrayarr_out={{arr.buf,val}};returnarr_out;}我想做的是创建一个用另一个数组中的数据初始化的新数组,并在末尾放置一个新元素。减去constexpr我可以通过在push_back函数中循环初始化来让它工作。看起来你不

c++ - std::list 的新位置

我正在寻求实现一个(双向)链表,它仅在内部调用placementnew,将所有内存定向到分配有类似内容的池:char*memPool=newchar[4096];//One-offnormal'new'最初我打算实现我自己的类,它接受一个指向(类管理)预分配内存池的指针。但是,我想首先确定我无法使用std::list获得相同的结果。特别是,thethirdsectionofDavidRodríguez'sanswertothisSOquestion让我担心。std::list必须在其组件节点上调用new和delete是有道理的,但我想修改它行为,以便将所有节点分配到我的自定义池中。因此

c++ - constexpr 替换数学常量,如 M_PI

有没有C++11constexpr常量可以用来代替中的常量宏,即像M_PI这样的常量和friend?或者缺少它,任何全局const在运行时提供这些常量的值? 最佳答案 C++标准库中没有定义预定义的constexpr或全局常量。但是您可以自己定义它们,例如:namespaceMathConstants{constdoubleE=2.71828182845904523536;constdoubleLOG2E=1.44269504088896340736;constdoubleLOG10E=0.434294481903251827651